ב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א'

Similar documents
שאלות חזרה 2 האוניברסיטה החליטה לפרסם שמות הסטודנטים המצטיינים בקורס שלנו. סטודנט מצטיין הוא סטודנט שקיבל

רזח יליגרתו םי יראני ב ם

מבוא למדעי המחשב תרגול 13: עצים בינאריים

מבוא לתכנות ב- JAVA תרגול 7

<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp)

3 Dynamic Routing A (RIP and OSPF)

שאלה 1 מהו הפלט של התוכנית הבאה:

תרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> }

מבוא לתכנות מערכות מבחן מועד א' סמסטר חורף

כתבו קוד ב- 3 קבצי ה hpp (כתבו כהערה את שם הקובץ מעל) כך שהקוד יהיה תקין ובסגנון טוב. אין חובה

הנכות 1 םוכיס לוגרת 13 1

הוראות לנבחן גמר לבתי ספר לטכנאים ולהנדסאים סמל השאלון: תכנות מערכות ושפת סף ההנחיות בשאלון זה מנוסחות בלשון זכר, אך מכוונות לנבחנות ולנבחנים כאחד.

במידה ולסעיף ניתנה תשובה ובנוסף נרשם לגבי הסעיף לא יודע/ת אזי הניקוד שיינתן

הפלט אחרי הביצוע של ההוראה :what3(root)

תוכנה 1 סמסטר א' תשע"א

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה


Exams questions examples

Engineering Programming A

הנכות 1 םוכיס לוגרת 13 1

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf("bla\n"); 8. return 0; 9. }

Algorithms. Intro2CS week 5

קורס תכנות בשיעור הקודם למדנו על רקורסיה שיעור שישי: מערכים פונקציה רקורסיבית שאלה חישוב נוסחאות רקורסיביות בשפת C

פתרון מוצע לבחינת מה"ט ב_שפת c מועד אביב תשע"ח, פברואר 8102 מחבר: מר שייקה בילו, מכללת אורט רחובות

מבוא לתכנות בשפת C. Tzachi (Isaac) Rosen

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization

Computer Programming A תרגול 9

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes

תזכורת: עץבינארי מבוא למדעי המחשב הרצאה 24: עצי חיפוש בינאריים

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num)

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

הנכות 1 םוכיס לוגרת 14 1

עמוד 1 (תאריך ( âùéä ער äìàù בכל השאלות ניתן להניח שהקלט תקין. 100 íåëñ חורף :

Graph Database, think different!

Introduction to Programming in C תרגול 8

מבוא לתכנות ב- JAVA תרגול 6

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator

הנכות 1 םוכיס לוגרת 13 1

קורס תכנות שיעור שישי: מחרוזות, מצביעים

קורס גרפיקה ממוחשבת 2008 סמסטר ב' ליאור שפירא 1 חלק מהשקפים מעובדים משקפים של פרדו דוראנד, טומס פנקהאוסר ודניאל כהן-אור

שאלה 1, סעיף ב )11 נק'(

Tutorial 10. Introduction to C++ שימו

$ gcc check.c. $ a.out. $ gcc check.c -o check. $ check. $ gcc -Wall check.c -o check. #include <stdio.h>

ת ונכת סרוק תורשוקמ תומישר :יעישת רועיש 1

תרגול 3 מערכים ופונקציות

מבוא לתכנות ב- JAVA תרגול 5. Ipc161- practical session 5

שים לב! אין לכתוב בשוליים. השוליים יחתכו לצורך סריקת המבחן.

חוברת תרגילים לתרגול יסודות התכנות

תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 תרגול 2: מערכים ומבני בקרה

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת

2. (לדוגמא: יחידת הספריה (my_unit.c. #include "my_unit.c" היחידה (חלק ה-.(prototype לדוגמא:. my_unit.h הכותר. הוראת מדעי המחשב, אוניברסיטת תל-אביב

תרשים המחלקות ותרשים העצמים

ד"ר אחיה אליסף מר בני לוטטי פרופ' אנדרי שרף הנדסת תוכנה

Amortized Analysis, Union-Find,

Fundamentals of Computer Graphics, Image Processing, and Vision 1 חלק מהשקפים מעובדים משקפים של פרדו דוראנד, טומס פנקהאוסר, טל הסנר וליאור שפירא

9. טופס הזמנת מוצרים טופס ההזמנה הוא טופס מורכב. מעורבים בו 4 טבלאות נתונים. קשרי הגומלין בין הטבלאות : הטופס :

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner

הוראות לנבחן סף ובהם שמונה שאלות. עליך לענות על שש שאלות, על פי ההנחיות בכל פרק. גמר לבתי ספר לטכנאים ולהנדסאים

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

מבוא לתכנות ב- JAVA מעבדה 2

Computer Programming Summer 2017

קורס תכנות רשימה מקושרת דוגמה: חיפוש מעבר על רשימה דוגמא: שחרור רשימה מקושרת דוגמא: הוספת אברים שלא בהתחלה

מבוא לתכנות ב- JAVA מעבדה 4

Practical Session No. 14 Topological sort,amortized Analysis

קורס תכנות כתובות בזיכרון כתובות בזכרון מצביעים וכתובות מצביעים וכתובות שיעור שביעי: מבנים, הקצאת זיכרון דינאמית האופרטור &

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development(

רשימות דילוגים Skip Lists

מבוא למדעי המחשב עבודה # 3

עצים. מבני נתונים Iterators רשימות מקושרות עצים "רגילות" רקורסיביות

ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים. .vector. list iterator נכיר תחילה את האוסף הפשוט ביותר בספריה

מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch

סטודנטים יקרים הפתרונות מוגשים בסרטוני וידאו המלווים בהסבר קולי, כך שאתם רואים את התהליכים בצורה מובנית, שיטתית ופשוטה, ממש כפי שנעשה בשיעור פרטי.

פתרון מוצע לבחינה בשפת C של מה"ט מועד אביב תשע"ז, פברואר 2017 מחבר: מר עסאקלה שאדי, מכללת אורט בראודה

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13

מבוא למדעי המחשב תירגול 3:

תכנות מתקדם בשפת C משתנים

Programming in C תרגול 8

מבוא לתכנות ב- JAVA מעבדה 3. Ipc161-lab3

מבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2

תוכנה 1 * לא בהכרח בסדר הזה

מבוא לתכנות תוכנית שעור מס. 1 1 דר' דרור טובי, המרכז האוניברסיטאי אריאל בשומרון.

תרגול מספר 3: מערכים

תור שימושים בעולם התוכנה

Practical Session - Heap

אוניברסיטת בן-גוריון בהצלחה! מספר נבחן: מדור בחינות רשמו תשובותיכם בשאלון זה בלבד ובמקום המוקצה לכך בלבד! תשובות מחוץ לשאלון לא יבדקו.

קורס תכנות שיעור שני: שימוש במשתנים,

תרגול מס' 5: IO )קלט-פלט(

ASP.Net Web API.

Programming for Engineers in Python

Programming for Engineers in Python

תרגילים ופתרונות בשפת - C הסתעפויות

מבוא למדעי המחשב תרגול 10 Comparator, Comparable, Binary Trees

Transcription:

אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : א' מועד קיץ סמ' שנה תשע"ז 3 שעות משך הבחינה : דף פוליו אחד לא מודפס חומר עזר : ולא מצולם. אין להשתמש במחשבון. במבחן זה 5 שאלות רשמו תשובותיכם בדפי התשובות בלבד מחברת הטיוטה לא תימסר לבדיקה בסיום המבחן נאסוף רק את דפי התשובות מותר להגדיר פונקציות עזר בכל השאלות, אלא אם נאמר אחרת. כתבו קוד קריא והקפידו על אינדנטציה והערות )בעברית(. ב ה צ ל ח ה! 1

#include <stdio.h> #include <stdlib.h> שאלה )14 1 נקודות( נתונה התכנית הבאה: typedef struct item *link; typedef struct item { int value; link next; item; void what(link head, int num, int bip) { if (!head) return; switch (bip) { case 0: if (head->value >= num) { printf("%d\n", head->value); what(head->next, num, bip + 1); else what(head->next, num, bip); break; case 1: what(head->next, num, bip + 1); break; case 2: printf("%d\n", head->value); what(head->next, num, bip - 1); void main() { link top = NULL, temp; int i, arr[] = { 2, 10, 8, 4, 2, 1, 13, 6, 4, 5 ; for (i = 0; i < 10; i++) { temp = (link)malloc(sizeof(item)); temp->value = arr[i]; temp->next = top; top = temp; what(top, 7, 0); סעיף א'. )8 נקודות( מה הפלט של התכנית הנ"ל? סעיף ב'. )6 נקודות( הסברו במשפט אחד מה יעודה של הפונקציה?what 2

יותר משני בנים, משתמשים בהגדרה הבאה: typedef struct newnode{ int val, sonsnumber; struct newnode **arr, *father; newnode; שאלה )18 2 נקודות( כדי להגדיר עץ כללי, בו לכל צומת עשויים להיות כאשר sonsnumber הוא מספר הבנים של הצומת ו- arr מערך של מצביעים לבנים, father הוא מצביע לאב של הצומת. ניתן ליצג את הנתונים של עץ כללי בעזרת עץ בינארי ומשתמשים בהגדרה הבאה: typedef struct Node{ int val; struct Node* firstson, *nextbrother; Node; בעץ הבינארי הזה כל צומת מפנה ל- firstson הבן הראשון )השמאלי( של צומת זה שלמעשה מוגדר בעץ הכללי כ-[ arr[0 ולאח הבא )מימין( של צומת זה מהעץ הכללי )nextbrother( או NULL אם אין כזה. בהינתן מבנה נתונים כזה, הפונקציה root) newnode* transformtree(node* שמקבלת root שורש עץ בינארי יוצרת ומחזירה עץ כללי חדש שמיצג את אותום נתונים. השלימו בדף התשובות את הקטעים המסומנים ב-?? n??. מניחים שהעץ תקין ושכל פונקציות הספריה מתפקדות ללא תקלה. ( רק עבור שורש העץ החדש הפונקציה אינה מעדכנת את השדה ) father #include <stdlib.h> newnode* transformtree(node* root) { newnode* newroot; Node* temp; int i; if (root == NULL) return NULL; newroot =?? 1?? ; newroot->val =?? 2?? ; for (i=0, temp =?? 3?? ; temp; temp=temp->nextbrother, i++);?? 4?? = i; if (i == 0)?? 5?? ; else { newroot->arr =?? 6?? ; for (i=0,?? 7?? ; temp; temp=temp->nextbrother, i++) { newroot->arr[i] =?? 8?? ;?? 9?? = newroot; return newroot; 3

שאלה ( 3 23 נקודות ) כיתבו פונקציה newsizeptr) char **palindrome(char **strarr, int size, int* המקבלת מערך של מחרוזות,strArr את גודלו size ומצביע למספר שלם.newSizePtr הפונקציה תחזיר מערך חדש של מחרוזות חדשות. המערך החדש יכיל אך ורק את המחרוזות מ- strarr המהוות פולינדרום, ודרך המצביע newsizeptr הפונקציה "תחזיר" את גודל המערך החדש. שימו לב: לא ניתן להניח דבר על המערך שהתקבל בפונקציה. אין לשנות את המערך שהתקבל בפונקציה. חובה לכתוב לפחות פונקצית עזר אחת. ניתן להניח כי כל פונקציות הספרייה עובדות היטב. כל המערכים שנוצרו בפונקציה חייבים להיות בגודל מדויק ללא איברים מיותרים. שאלה )23 4 נקודות( נתונה מטריצה של מספרים שלמים MxN עם ערכים 0 ו- 1 בלבד. סעיף א'. )20 נקודות( כתבו פונקציה..) N, SquareSize (int ** board, int M, int לא רקורסיבית ויעילה ביותר אשר מוצאת גודל הריבוע המקסימלי במטריצה הנתונה שכולו 1 םי-. לדוגמא, עבור המטריצה הבאה התשובה אמורה להיות 4. 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 דרך הערך המוחזר של הפונקציה ו/או ארגומנטים נוספים הפונקציה מחזירה גודל הריבוע המקסימלי, וקואורדינטות הפינה העליונה שמאל של הריבוע. סעיף ב'. )3 נקודות( int **arr, N, M, max, x, y ; עבור ההכרזה: רשמו קריאה לפונקציה שמאפשרת לקבל ב- y max,,x את הערכים הנדרשים. שימו לב: חובה לכתוב שתי פונקציות עזר. 4

שאלה ( 5 25 נקודות( בכל מחלקה שבה סטודנטים לומדים את הקורס שלנו קיים קובץ נתוני הסטודנטים האלה, כל שורה בקובץ מכילה את הפרטים הבאים: 20 תווים - שם הסטודנט 20 תווים - כתובת 9 ספרות - מספר ת.ז. 2 ספרות )בין 11 ל- 99 ( - מספר תרגול הקובץ מסודר לפי מספר ת.ז. בסדר עולה. שם הקובץ הוא קוד המחלקה )2 ספרות( עם סיומת.txt כתוב פונקציה ) new_files( int שיוצרת מספר קבצים חדשים כמספר התרגולים בפועל בקורס. המספר הזה אינו ידוע מראש )כי משתנה במהלך הרישום(. שם כל קובץ הוא tirgul_nn.dat כאשר NN הוא קוד התרגול. כל שורה בקובץ מכילה: 20 תווים - שם הסטודנט 9 ספרות - מספר ת.ז. 2 ספרות - קוד מחלקה 2 ספרות )נתון זה קיים רק אם הסטודנטים לומד בשתי מחלקות ) קוד מחלקה שניה - הקבצים מסודרים לפי מספר ת.ז. בסדר עולה. לדוגמא אם בקורס נפתחו שלוש קבוצות תרגול 11 14, 17, הפונקציה יוצרת בדיוק שלושה קבצים שהם:. tirgul_11.dat,tirgul_14.dat,tirgul_17.dat הפונקציה תחזיר את מספר הקבצים שנוצרו ובכל מקרה של תקלה בעבודה עם קובץ הפונקציה תחזיר את הערך 0. שימו לב! סטודנט יכול ללמוד לכל היותר בשתי מחלקות מניחים שאין טעות ברישום ושאין מצב שאותו סטודנט רשום בקבוצות שונות בכל אחד מהקבצים, אין תווי הפרדה בין נתון לנתון. אין לעבור על קובץ יותר מפעם אחת. אין להעתיק קובץ למבנה נתונים אחר )מערך, רשימה משורשרת, עץ,קובץ אחר...(. 5

רשימת פונקציות קלט/פלט: INPUT/OUTPUT FUNCTIONS PROTOTYPES Open/Close a file FILE *fopen( char *filename, char *mode ); int fclose(file *stream); Repositions the file pointer to the beginning of a file void rewind( FILE *stream ); Get/put a character int fgetc( FILE *stream ); int fputc( int c, FILE *stream ); Get/put a string char *fgets( char *string, int n, FILE *stream ); int fputs( const char *string, FILE *stream ); Formatted Input/Output int fscanf( FILE *stream, const char *format [, argument ]... ); int sscanf( const char *string, const char *format [, argument ]... ); int fprintf( FILE *stream, const char *format [, argument ]...); int sprintf( char *string, const char *format [, argument ]...); Remove a file int remove(const char* filename); Rename a file int rename(const char* oldname, const char*newname); ב ה צ ל ח ה! 6